"""
根据用户的输入文字:
林小小是一名互联网公司的男性内容策划总监，身高:195cm,日常总带着一副细框眼镜，笑起来时眼角会露出淡淡的梨涡，显得温和又有活力。她最大的爱好是周末去城市周边的咖啡馆探店，随身带着一本复古笔记本，遇到喜欢的装修风格或好喝的饮品，就会随手记录下来，偶尔还会配上几笔简笔画；闲暇时也爱在家摆弄多肉植物，阳台被她打理得像个小花园，每盆多肉都有专属的名字。此外，她每周会抽两个晚上去练瑜伽，既能缓解工作压力，也让她始终保持着舒展挺拔的体态，整个人透着一种从容又热爱生活的气质,看上去像28岁的
提取重要信息:
姓名, 性别, 身高, 爱好,年龄
"""
from langchain.chat_models import init_chat_model
from langchain_core.prompts import PromptTemplate
from pydantic import BaseModel


class User(BaseModel):
    name: str
    gender: str
    height: int
    hobby: str
    age: int


json_schema = {
    "title": "User",
    "description": "User",
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "description": "姓名"
        },
        "gender": {
            "type": "string",
            "description": "性别"
        },
        "height": {
            "type": "integer",
            "description": "身高"
        },
        "hobby": {
            "type": "string",
            "description": "爱好"
        },
        "age": {
            "type": "integer",
            "description": "年龄"
        }

    }
}

llm = init_chat_model(
    model="deepseek-chat",
    model_provider="deepseek"
)

structured_output_llm = llm.with_structured_output(json_schema)

template = """
    提取用户输入文字中的姓名, 性别, 身高, 爱好,年龄
    用户输入:{query}
"""

prompt_template = PromptTemplate(
    template=template,
    input_variables=["query"]
)

query_text = "林小小是一名互联网公司的内容策划总监，身高:195cm,日常总带着一副细框眼镜，笑起来时眼角会露出淡淡的梨涡，显得温和又有活力。她最大的爱好是周末去城市周边的咖啡馆探店，随身带着一本复古笔记本，遇到喜欢的装修风格或好喝的饮品，就会随手记录下来，偶尔还会配上几笔简笔画；闲暇时也爱在家摆弄多肉植物，阳台被她打理得像个小花园，每盆多肉都有专属的名字。此外，她每周会抽两个晚上去练瑜伽，既能缓解工作压力，也让她始终保持着舒展挺拔的体态，整个人透着一种从容又热爱生活的气质,看上去像28岁的"

prompt = prompt_template.format(query=query_text)
print(prompt)

ret = structured_output_llm.invoke(prompt)
print(ret)

print(type(ret))

# 存到mysql 表  ORM
